#ifndef ZIPMANAGER_H
#define	ZIPMANAGER_H

#include "ZipReader.h"
#include "ZipValidator.h"
#include "ZipNavigator.h"
#include "ZipException.h"
#include <vector>

typedef void PF_Traverse(FileHeader*);

class ZipManager
{
public:
    ZipManager();
    ~ZipManager();
    void openFile(const char* fileName);
    void decompress(const char* output);
    void compress(const char* fileName, const char* output, std::vector<std::string> pathList);
    void navigate();
    
    void traverse(PF_Traverse pfNavigate);
    
private:
    ZipReader* zipReader_;
    ZipValidator* validator_;
    std::list<FileHeader*> fileHeaderList_;
};

#endif	/* ZIPMANAGER_H */

